//思路一：反复/3
bool isPowerOfThree(int n) {
    if(n <= 0)
        return false;
    while(n > 1){
        if(n % 3 == 0){
            n /= 3;
        }else{
            return false;
        }    
    }
    return true;
}

//思路二：递归
bool isPowerOfThree(int n) {
    if(n <= 0){
        return false;
    }else{
        if(n != 1){
            if(n % 3 == 0){
                return isPowerOfThree(n / 3);
            }else{
                return false;
            }
        } 
    }
    return true;
}

//思路三：数学做法
/*如果 n 是 3 的幂，即 n=3^k，那么在本题的数据范围下，3^k必然是3^19=1162261467 的因子。*/
bool isPowerOfThree(int n) {
   return n > 0 && 1162261467 % n == 0;
}

/*给定一个整数，写一个函数来判断它是否是 3 的幂次方。如果是，返回 true ；否则，返回 false 。

整数 n 是 3 的幂次方需满足：存在整数 x 使得 n == 3x
-2^31 <= n <= 2^31 - 1*/